import openpyxl
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup

# Создаем новый Excel файл
workbook = openpyxl.Workbook()
sheet = workbook.active

# Заголовки столбцов
sheet['A1'] = 'Ссылка'
sheet['B1'] = 'Откуда'
sheet['C1'] = 'Куда'
sheet['D1'] = 'Время маршрута'
sheet['E1'] = 'Дистанция маршрута'

# Чтение ссылок из файла links.txt
with open('links.txt', 'r') as file:
    links = file.read().splitlines()

# CSS-селекторы для данных
selectors = {
    'source': 'input[class^="_zmzigod"][placeholder="Откуда"]',
    'destination': 'input[class^="_zmzigod"][placeholder="Куда"]',
    'route_time': 'div[class^="_iilzoe9"]',
    'route_distance': 'div[class^="_sgs1pz"]'
}

# Путь к chromedriver
chrome_driver_path = 'C:\\Users\\ogrigoryev\\PycharmProjects\\pars links\\chromedriver_win32\\chromedriver.exe'

# Создаем экземпляры Options и Service для WebDriver
options = Options()
options.headless = True  # Запуск в безголовом режиме
service = Service(chrome_driver_path)

# Создаем экземпляр WebDriver с использованием Options и Service
driver = webdriver.Chrome(service=service, options=options)

# Функция для парсинга данных
def parse_data(url, selectors, driver):
    driver.get(url)
    soup = BeautifulSoup(driver.page_source, 'html.parser')
    data = {'Ссылка': url}
    for key, selector in selectors.items():
        element = soup.select_one(selector)
        if element:
            if 'route_time' in key or 'route_distance' in key:
                data[key] = element.text
            else:
                data[key] = element.get('value')
    return data

# Парсинг данных и сохранение в Excel файл
current_row = 2
for link in links:
    data = parse_data(link, selectors, driver)
    sheet.cell(row=current_row, column=1, value=data.get('Ссылка', ''))
    sheet.cell(row=current_row, column=2, value=data.get('source', ''))
    sheet.cell(row=current_row, column=3, value=data.get('destination', ''))
    sheet.cell(row=current_row, column=4, value=data.get('route_time', ''))
    sheet.cell(row=current_row, column=5, value=data.get('route_distance', ''))
    current_row += 1

# Сохраняем данные в Excel файл
workbook.save('parsed_data.xlsx')

# Закрываем браузер
driver.quit()
